#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#include <math.h>
//int main() {
//	int i = 0;
//	//int n = 1;
//	for (i = 0;i <= 10000;i++) {
//		int tmp = i;
//		int n = 1;
//		while (tmp > 9) {
//			tmp /= 10;
//			n++;
//		}
//
//		 tmp = i;
//		int sum = 0;
//		while (tmp) {
//			sum += (int)pow(tmp % 10, n);
//			tmp /= 10;
//		}
//		if (sum == i) {
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}

//int main() {
//	int a = 0;
//	int n = 0;
//	scanf("%d %d", &a, &n);
//	int i = 0;
//	int k = 0;
//	int sum = 0;
//	for (i = 0;i < n;i++) {
//		k = k * 10 + a;
//		sum += k;
//	}
//	printf("%d\n", sum);
//	return 0;
//}
//void revease(int a) {
//	int sum = 0;
//	if (a != 0) {
//		sum += a;
//	}
//		revease(a / 2);
//	printf("%d\n", sum);
//}
//
//int main() {
//	int a = 0;
//	scanf("%d", &a);
//	revease(a);
//	return 0;
//}
//int main() {
//	int money = 0;
//	scanf("%d", &money);
//	int total = 0;
//	int empty = 0;
//	total += money;
//	empty = money;
//	while (total >= 2) {
//		total += empty / 2;
//		empty = empty / 2 + empty % 2;
//	}
//	printf("%d\n", total);
//
//	return 0;
//}

int main() {
	int n = 0;
	scanf("%d", &n);
	int arr[n][n];
	int i = 0;
	int j = 0;
	for (i = 0;i < n;i++) {
		for (j = 0;j < n;j++) {
			scanf("%d", &arr[i][j]);
		}
	}
	int flag = 1;
	for (i = 0;i < n;i++) {
		for (j = 0;j < i;j++) {
			if (arr[i][j] != 0) {
				flag = 0;
				goto end;
			}
		}
	}
end:
	if (flag == 1) {
		printf("YES\n");
	}
	else {
		printf("NO\n");
	}
	return 0;
}
